﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace App_Persistencia
{
    public class Agenda_Data
    {
        int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        Evento_Data evento;

        public Evento_Data Evento
        {
            get { return evento; }
            set { evento = value; }
        }
        Reunion_Data reunion;

        public Reunion_Data Reunion
        {
            get { return reunion; }
            set { reunion = value; }
        }
        Pedido_Data pedido;

        public Pedido_Data Pedido
        {
            get { return pedido; }
            set { pedido = value; }
        }

        
        
        DateTime fechaFin;

        public DateTime FechaFin
        {
            get { return fechaFin; }
            set { fechaFin = value; }
        }
        string descripcion;

        public string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }
        
        public void guardarAgenda() {


            // Crear el Objeto de conexion, inicializa con la cadena de conexion
            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            System.Data.SqlClient.SqlConnection connection = new SqlConnection(conexion);

            // Abro la conexion
            connection.Open();

            //Invoco al Objeto SqlTransaction para manejar la transaccion  
            //ejecuto la transaccion
           
            try
            {
                // Creo el Objeto Command, le asigno la conexion y el Procediminto a utilizar
                System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
                //Asigno a la propiedad Transaction del Objeto SqlCommand el valor del Objeto SqlTransaction
             
                //Asingo la conexion al objeto conection
                command.Connection = connection;
                command.CommandText = "spCargarAgenda";
                command.CommandType = CommandType.StoredProcedure;

                // Declaro el Objeto de parametro
                System.Data.SqlClient.SqlParameter param;

                if (evento.Id == (-1))
                {
                    param = command.Parameters.AddWithValue("@ReunionId", reunion.Id);
                    param.DbType = DbType.Int32;
                    param.Direction = ParameterDirection.Input;

                    param = command.Parameters.AddWithValue("@Fecha", Reunion.Fecha);
                    param.DbType = DbType.DateTime;
                    param.Direction = ParameterDirection.Input;

                    param = command.Parameters.AddWithValue("@EventoId", -1);
                    param.DbType = DbType.Int32;
                    param.Direction = ParameterDirection.Input;

                }
                else {
                    param = command.Parameters.AddWithValue("@EventoId", evento.Id);
                    param.DbType = DbType.Int32;
                    param.Direction = ParameterDirection.Input;

                    param = command.Parameters.AddWithValue("@Fecha", evento.FechaEvento.AddHours(8));
                    param.DbType = DbType.DateTime;
                    param.Direction = ParameterDirection.Input;


                    param = command.Parameters.AddWithValue("@ReunionId", -1);
                    param.DbType = DbType.Int32;
                    param.Direction = ParameterDirection.Input;
                
                }


                param = command.Parameters.AddWithValue("@Descripcion", descripcion);
                param.DbType = DbType.String;
                param.Direction = ParameterDirection.Input;

                

                // Ejecuto el procedimiento
                command.ExecuteNonQuery();

                
            }
            catch (SystemException e)
            {
               
                //provoco una Exepcion para la capa superior
                System.Diagnostics.Trace.Write(e.Message);

                throw new SystemException(e.Message);
            }
            finally
            {
                //Si termino la carga correctamente cierro la conexion
                connection.Close();
            }

        
        }

        public DataTable buscarActividadesPorTipo(string tipo)
        {
            string commandSQL = "";

            if (tipo == "Reunión")
            {
                 commandSQL = " SELECT   Agenda.age_Id AS AgId, Agenda.age_Descripcion AS descripcion, Agenda.age_fechaFin AS Fecha, Agenda.evento_Id AS EventoId, Agenda.reunion_Id AS ReunionId " +
               "  FROM      Agenda INNER JOIN " +
               "  Actividad_Tipo ON Agenda.tipoActividad_Id = Actividad_Tipo.tAct_Id INNER JOIN " +
             "    Reunion ON Agenda.reunion_Id = Reunion.reu_Id " +
                "   WHERE   (Actividad_Tipo.tAct_Nombre = '"+tipo+"') AND (Reunion.estado_Id = 2)";
                    
                    
             }
    
            else
            {
                 commandSQL = " SELECT   Agenda.age_Id AS AgId, Agenda.age_Descripcion AS descripcion, Agenda.age_fechaFin AS Fecha, Agenda.evento_Id AS EventoId, Agenda.reunion_Id AS ReunionId " +
                            "  FROM      Agenda INNER JOIN " +
                           "   Actividad_Tipo ON Agenda.tipoActividad_Id = Actividad_Tipo.tAct_Id INNER JOIN " +
                           "   Evento ON Agenda.evento_Id = Evento.eve_Id " +
                          "    WHERE   (Actividad_Tipo.tAct_Nombre  = '"+tipo+"') AND (Evento.estadoEvento_Id = 1 OR " +
                          "    Evento.estadoEvento_Id = 2)  " ;
             
            }

     

            string conexion = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
            SqlDataAdapter dataAdapter = new SqlDataAdapter(commandSQL, new SqlConnection(conexion));
            DataSet dataSet = new DataSet();
            dataAdapter.Fill(dataSet, "Agenda");
            DataTable dataTable = dataSet.Tables["Agenda"];
            return dataTable;
        }
    }
}
